package cn.demoncat.util.sec;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * 描述：SHA512 消息摘要（数据唯一签名，不可逆）
 *
 * @author 延晓磊
 *
 * @since 2016年8月11日
 */
public class SHA512Util {
 
	/**
	 * SHA512 签名
	 * 
	 * @param data	源数据
	 * @return 数据签名(128位16进制字符串)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月31日
	 */
	public static String digest(byte[] data) {
		return DigestUtils.sha512Hex(data);
	}

	/**
	 * SHA512 签名
	 * 
	 * @param data	源数据
	 * @return 数据签名(128位16进制字符串)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月31日
	 */
	public static String digest(String data) {
		return DigestUtils.sha512Hex(data);
	}

	/**
	 * SHA512 签名
	 * 
	 * @param data	源数据
	 * @return 数据签名(128位16进制字符串)
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年10月31日
	 */
	public static String digest(InputStream data) {
		try {
			return DigestUtils.sha512Hex(data);
		} catch (IOException e) {
			throw new RuntimeException("SHA512签名失败",e);
		}
	}
}
